/*
 * Posicion.cpp
 *
 *  Created on: 18/11/2013
 *      Author: fernando
 */

#include "Posicion.h"
#include <stdlib.h>

using std::vector;

Posicion::Posicion(unsigned int x, unsigned int y){
	this->x =x;
	this->y =y;
}

Posicion::~Posicion(){
}

unsigned int Posicion::getX(){
	return x;
}

unsigned int Posicion::getY(){
	return y;
}

bool Posicion::operator ==(Posicion& c){
	return (this->getX()== c.getX() && this->getY() == c.getY());
}


int comparator (const void* arg1, const void* arg2) {
	if (((Posicion*)arg1)->getY() < ((Posicion*)arg2)->getY()){
		return -1;
	}else if (((Posicion*)arg1)->getY() == ((Posicion*)arg2)->getY()){
		if (((Posicion*)arg1)->getX() < ((Posicion*)arg2)->getX()){
			return -1;
		}else if (((Posicion*)arg1)->getX() == ((Posicion*)arg2)->getX()){
			return 0;
		}
	}
	return 1;
}

void Posicion::sortPosiciones(vector<Posicion>* pos){
	qsort ((void*)&(pos->at(0)), pos->size(), sizeof(Posicion), comparator);
}

void Posicion::eliminarRepetidas(vector<Posicion>* pos){
	vector<Posicion> tmp;
	Posicion posActual = pos->at(0);
	tmp.push_back(posActual);
	for (unsigned int i = 1; i < pos->size(); i++){
		if(!(pos->at(i) == posActual)){
			posActual = pos->at(i);
			tmp.push_back(posActual);

		}
	}
	pos->clear();
	pos->insert(pos->end(), tmp.begin(), tmp.end());
}


